package cn.com.spic.demo.api;

import cn.com.spic.demo.constants.AppInfoConstant;
import cn.com.spic.demo.dto.*;
import com.yonyou.cloud.middleware.rpc.RemoteCall;
import org.apache.ibatis.annotations.Param;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

@RemoteCall(AppInfoConstant.APP_INF_PROVIDER)
public interface ProgressReportService {
    void insertProgress(ProgressReportDTO[] progressReportDTO) throws ParseException;

    List<ProgressReportDTO> getMaxActRateReportdtos(Map<String, String> map);

    //进度填报和审核情况列表
    List<ProgressReportDTO> getjdAndShqkList(Map<String, String> map);

    //根据部门编号查询出当前月份未完成的进度项
    List<ProgressReportDTO> getActionByDept(Map<String, String> map);

    /**
     * XX公司对标提升工作月度报告---累计完成进度
     *
     * @return
     */
    List<EchartDTO> groupReportMonth_ljwcjd(Map<String, String> map);

    /**
     * XX公司对标提升工作月度报告---当月完成进度
     *
     * @return
     */
    List<EchartDTO> groupReportMonth_dywcjd(Map<String, String> map);

    /**
     * 获取120项专线数据
     *
     * @return
     */
    List<EchartDTO> getActionByZx(Map<String, String> map);

    /**
     * 逾期的项目
     *
     * @return
     */
    List<EchartDTO> yuqiJdx(Map<String, String> map);

    /**
     * 逾期的项目--详细信息
     *
     * @return
     */
    List<EchartDTO> yuqiJdx_xiangxi(Map<String, String> map);

    /**
     * 获取每个二级的平均计划完成率，也可以用id查询单个公司的平均计划完成率
     *
     * @return
     */
    List<EchartDTO> getjhwclBypingjunf(Map<String, String> map);

    /**
     * 获取10大对标领域平均计划完成率，也可以用id查询平均计划完成率
     *
     * @return
     */
    List<EchartDTO> getdblypingjunf(Map<String, String> map);

    /**
     * 获取九大项
     *
     * @return
     */
    List<EchartDTO> getNinePro();

    /**
     * 获取10大专项的实际完成和计划完成
     *
     * @return
     */
    List<EchartDTO> zxSjwcAndJhwc(Map<String, String> map);

    List<EchartDTO> yuqiJdx_xiangxi_zx(Map<String, String> map);

    //获取当前年月完成的填报项
    List<ProgressReportDTO> getAllFinishAcion(Map<String, String> map);

    //集团公司对标提升工作月度报告-二级单位工作进展
    List<EchartDTO> ejdwjz_charts(Map<String, String> map);

    //集团公司对标提升工作月度报告-第一段文本
    List<EchartDTO> groupcompany_gztd_a(Map<String, String> map);

    //集团公司对标提升工作月度报告-第二段文本
    List<EchartDTO> groupcompany_gztd_b(Map<String, String> map);

    //集团公司对标提升工作月度报告-第二段文本
    List<EchartDTO> groupcompany_gztd_b_a(Map<String, String> map);

    //集团公司对标提升工作月度报告-第二段文本
    List<EchartDTO> groupcompany_gztd_b_b(Map<String, String> map);

    //上报稿的逾期图标
    List<EchartDTO> yuqijdx_sbg(Map<String, String> map);

    EchartDTO getFileById(Map<String, String> map);

    List<EchartDTO> getReportByDept(Map<String, String> map);

    List<String> getMaxListActionId(Map<String, String> map);

    String getSumMaxActRateReportdtos(Map<String, String> map);

    //附件管理关联的二级单位列表
    List<EchartDTO> benchmarkingDetail(Map<String, String> map);

    //更新数据库中集团对于二级单位的审核情况;
    Integer UpdateGroupAudit(String Id, String auditId);

    //    集团审核不通过，进行驳回，改变二级管理的审核情况;
    Integer UpdateUnitDef(String Id, String def4);

    //  通过行动二级单位编号查询上交附件的名称以及地址
    EchartDTO SelectEnclosureIp(String action);


    //  驳回的附件的存储;
    Integer AddEnclosureIp(String actionId);

    //修改数据库指定行动项的附件驳回地址的默认值;
    Integer UpdateEnclosureDefault(String actionId);

    List<ProgressReportDTO> getProgressReportdtosNoLimit(Map<String, String> map);

    void insertProgressReportDtos(ActionProejctDTO dto);

    int saveReportProgress(ProgressReportDTO dto);

    int saveReportProgressSetNull(ProgressReportDTO dto);

    void saveParentReportProgress(ProgressReportDTO dto);

    ProgressReportDTO getProgressReportdtosNoByActionId(String id);

    String generateProgress() throws Exception;

    String getMaxReportdtosLimitOne(Map<String, String> map);

    Integer updateByExampleSelective(ProgressReportDTO progressReportPO);

    Integer delFile(String id);

    Integer countByExample(String def2, String def3);

    Integer countByExampleByIn(String def3, String[] arrays);

    List<String> selectActionIdByLike(Object[] ids);

    YearAndMonthDTO getMaxYearAndMonth(String actionId);

    String getThirdSumActRate(Map<String, Object> map);

    String getLastestNowMessage(String actionId);


    //附件管理列表
    List<EchartDTO> fileManagerList(Map<String, String> map);
}
